// locutor
// (c) 2008-2009, Normen Müller, normen.mueller@gmail.com  
// $Id$
package locutor.model.parsing.grgen

case class T(name: String, enums: List[Enum], nodes: List[Class], edges: List[Class])

case class Ident(name: String, t: Option[String], annos: Option[List[(String, String)]])

case class Enum(id: Ident, items: List[EnumItem])
case class EnumItem(key: Ident, value: Option[String])

abstract class Class(abstr: Boolean, const: Boolean)
case class NodeClass(id: Ident,
                     exs: List[String],
                     attrs: List[(Ident, Option[String])],
                     abstr: Boolean,
                     const: Boolean) extends Class(abstr, const)
case class EdgeClass(dir: Option[String],
                     id: Ident,
                     exs: List[String],
                     cs: List[String],
                     attrs: List[(Ident, Option[String])],
                     abstr: Boolean,
                     const: Boolean) extends Class(abstr, const)
